package net.looker.monitor.schdule;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

import net.looker.data.News;



/**
 * 栏目新闻管理器
 * 管理一个栏目新闻
 * @author solosky
 *
 */

public class NewsManager
{
	
	/**
	 * 上一次抓取的新闻列表
	 */
	private ArrayList <News> lastNewsList;
	/**
	 * 最近更新的新闻列表
	 */
	private ArrayList <News> curNewsList;
	
	/**
	 * 上一次新闻newsID - News 的hash表
	 * 便于以NewsID查找新闻
	 */
	private HashMap <String , News> lastNewsHashMap;
	/**
	 * 最近新闻newsID - News 的hash表
	 * 便于以NewsID查找新闻
	 */
	private HashMap <String , News> curNewsHashMap;
	
	
	/**
	 * 构造函数
	 */
	public NewsManager()
	{
		lastNewsHashMap = new HashMap<String,News>();
		curNewsHashMap = new HashMap<String,News>();
	}
	
	/**
	 * @param curNewsList the curNewsList to set
	 */
	public void setCurNewsList(ArrayList<News> curNewsList)
	{
		this.curNewsList = curNewsList;
	}

	/**
	 * 是否为第一次运行
	 */
	public boolean isFirstCheck()
	{
		return lastNewsList==null;
	}

	/**
	 * 返回上一次新闻列表
	 * @return ArrayList <News> 上一次新闻列表
	 */
	public ArrayList <News> getLastNewsList()
	{
		return lastNewsList;
	}
	
	/**
	 * 返回最新新闻列表
	 * @return ArrayList <News> 上一次新闻列表
	 */
	public ArrayList <News> getCurNewsList()
	{
		return curNewsList;
	}
	
	/**
	 * 更新新闻列表
	 * 现在的新闻变成上一次新闻，下一次新闻为空
	 */
	public  void update()
	{
		lastNewsList =  curNewsList;
		curNewsList  = new ArrayList<News>();
	}
	
	/**
	 * 返回上一次新闻列表中的新闻
	 * @param String lastNewsID 新闻ＩＤ
	 * @return News 如果找到返回相应的新闻对象，如果没找到，返回null
	 */
	public News getLastNews(String lastNewsID)
	{
		return lastNewsHashMap.get(lastNewsID);
	}
	
	/**
	 * 返回最近更新的新闻列表
	 */
	public News getCurNews(String curNewsID)
	{
		return curNewsHashMap.get(curNewsID);
	}
	/**
	 * 建立两次的新闻的newsID - News 的HashMap
	 * 便于查找
	 */
	public void buildHashMap()
	{
		//清除上一次的HASH
		lastNewsHashMap.clear();
		//建立新的HASH
		News tmpNews = null;
		Iterator <News>it = lastNewsList.iterator();
		while (it.hasNext())
		{
			tmpNews = it.next();
			lastNewsHashMap.put(tmpNews.getNewsHash(),tmpNews);
		}
		
		//建立最近更新的新闻HASH
		//清除上一次的HASH
		curNewsHashMap.clear();
		//建立新的HASH
		it = curNewsList.iterator();
		while (it.hasNext())
		{
			tmpNews = it.next();
			curNewsHashMap.put(tmpNews.getNewsHash(),tmpNews);
		}
	}
}
